package com.zs.games.utils;

import java.util.Base64;

/**
 * 
 * @date 2023年05月10日 15:55
 */
public class Base64SaltUtil {

    private static final int REPEAT = 6;

    /**
     * 加密处理
     * @param str 要加密的字符串，需要与盐值整合
     * @param repeat  重复次数
     * @return 加密后的数据
     */
    public static String encode(String str,String salt, int repeat) {
        // 加盐处理
        String temp = str +"&" + salt + "&";
        byte data[] = temp.getBytes();
        for (int i = 0; i < repeat; i++) {
            // 重复加密
            data = Base64.getEncoder().encode(data);
        }
        return new String(data);
    }

    /**
     * 解密处理
     * @param str 需要解密的内容
     * @return 解密后的原始数据
     */
    public static String decode(String str,int repeat) {
        // 获取加密的内容
        byte data[] = str.getBytes();
        for (int i = 0; i < repeat; i++) {
            // 多次解密
            data = Base64.getDecoder().decode(data);
        }
        // 删除盐值格式
        return new String(data).replaceAll("\\&\\w+\\&", "");
    }

    public static String passwordEncode(String password){
        return encode(password, "lzf", 2);
    }

    public static void main(String[] args) {
        String str = "admin";
        for (int i = 0; i < REPEAT; i++){
            String lzf = encode(str, "lzf", 2);
            System.out.println(lzf);
            System.out.println("解密：" + decode(lzf,2));
        }

    }


}
